package com.xiaoshuidi.cloud.module.contract.controller.admin.contract.vo.ownerContract;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

import static com.xiaoshuidi.cloud.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
import static com.xiaoshuidi.cloud.module.contract.util.date.DateUtils.FORMAT_DATE;
import static com.xiaoshuidi.cloud.module.contract.util.date.DateUtils.FORMAT_SECOND;

@Schema(description = "管理后台 - 业主合同 Response VO")
@Data
@ToString(callSuper = true)
public class ContractHouseOwnerPageRespVO {
    /**
     * ID
     */
    @Schema(description = "ID", required = true)
    private Long id;

    /**
     * 合同编号
     */
    @Schema(description = "合同编号")
    private String contractNo;

    /**
     * 审核状态
     * pending 待审批  | pass 审批通过 | reject 审批驳回
     */
    @Schema(description = "审核状态")
    private String approveStatus;

    /**
     * 合同状态
     * pending 待审批 | no_signed 待签约 | active 已生效 | normal_end 正常结束 | abnormal_end 非正常结束
     */
    @Schema(description = "合同状态")
    private String contractStatus;

    /**
     * 合同节点
     *  new 新签  | renewal 续约 | rentingOut 退租 | exchange 换房
     */
    @Schema(description = "合同节点")
    private String contractNode;

    /**
     * 签约时间
     */
    @Schema(description = "签约时间")
    @DateTimeFormat(pattern = FORMAT_SECOND)
    @JsonFormat(pattern = FORMAT_SECOND, timezone = TIME_ZONE_DEFAULT)
    private LocalDateTime signedTime;

    /**
     * 业主姓名
     */
    @Schema(description = "业主姓名")
    private String ownerName;
    /**
     * 手机号
     */
    @Schema(description = "手机号")
    private String phone;
    /**
     * 合同开始时间
     */
    @Schema(description = "合同开始时间")
    @DateTimeFormat(pattern = FORMAT_DATE)
    @JsonFormat(pattern = FORMAT_DATE, timezone = TIME_ZONE_DEFAULT)
    private LocalDate startTime;
    /**
     * 合同结束时间
     */
    @Schema(description = "合同结束时间")
    @DateTimeFormat(pattern = FORMAT_DATE)
    @JsonFormat(pattern = FORMAT_DATE, timezone = TIME_ZONE_DEFAULT)
    private LocalDate endTime;
    /**
     * 押金
     */
    @Schema(description = "押金")
    private BigDecimal deposit;
    /**
     * 月租金
     */
    @Schema(description = "月租金")
    private BigDecimal monthRent;
    /**
     * 支付方式 1月付 3季付 6半年付 12年付 其他
     */
    @Schema(description = "支付方式")
    private Integer payMethodF;

    /**
     * 房源ID
     */
    @Schema(description = "房源ID")
    private Long houseRoomId;

    /**
     * 房源
     */
    @Schema(description = "房源")
    private String roomName;

    /**
     * 付款方式 如付一押一
     */
    @Schema(description = "付款方式")
    private String payMethodFStr;

    /**
     * 租期 如1年2个月
     */
    @Schema(description = "租期")
    private String leaseTerm;

    /**
     * 合同周期
     */
    @Schema(description = "合同周期")
    private String contractPeriod;

    /**
     * 状态
     */
    @Schema(description = "状态")
    private String statusStr;

    /**
     * 状态Code
     */
    @Schema(description = "状态Code")
    private String statusCode;

    /**
     * 支行省
     */
    @Schema(description = "支行省")
    private String bankProvince;

    /**
     * 支行市
     */
    @Schema(description = "支行市")
    private String bankCity;

    /**
     * 支行编码
     */
    @Schema(description = "支行编码")
    private String bankCode;

    /**
     * 合同类型 paper纸质合同 | electronic 电子合同
     */
    @Schema(description = "合同类型")
    private String contractType;

    /**
     * 在线签约状态 signed_party_a 待甲方签约 |signed_party_b 待乙方签约 |signed 已签约
     */
    @Schema(description = "在线签约状态")
    private String signStatus;

    /**
     * 联系地址
     */
    private String contactAddress;

    /**
     * 行政地址
     */
    private String administrativeAddress;

    /**
     * 期满延期约定
     */
    private Integer extensionAgreement;

    /**
     * 抵押状态
     */
    private Integer mortgageStatus;

    /**
     * 是否可以饲养宠物
     */
    private Integer feedingPet;

    /**
     * 物业是否正规
     */
    private Integer propertyRegular;

    /**
     * 水表户号
     */
    private String watermeterNum;

    /**
     * 水表初始读数
     */
    private String watermeterInitial;

    /**
     * 电表户号
     */
    private String electricitymeterNum;

    /**
     * 电表初始读数
     */
    private String electricitymeterInitial;

    /**
     * 燃气户号
     */
    private String gasNum;

    /**
     * 燃气初始读数
     */
    private String gasInitial;

    /**
     * 消防设备
     */
    private Integer fireDevice;

    /**
     * 供暖方式
     */
    private Integer heatingMethod;

    /**
     * 紧急联系人姓名
     */
    private String emergencyContactName;

    /**
     * 紧急联系人手机号
     */
    private String emergencyContactPhone;

    /**
     * 页面展示状态code
     */
    private String contractShowStatus;

    /**
     * 签约人
     */
    private Long signerId;

    /**
     * 签约人姓名
     */
    private String signerName;

    /**
     * 负责管家id
     */
    private Long butlerId;

    /**
     * 负责管家姓名
     */
    private String butlerName;

    /**
     * 户型名称
     */
    private String roomHouseTypeName;

    /**
     * 区域
     */
    private String district;

    /**
     * 类型（是指整租、合租）
     */
    private String wholeTypeName;

    /**
     * 面积
     */
    private Double space;

}
